package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	//创建Web服务器
	server := gin.Default()

	//注册middleware中间件
	//middleware的本质就是一个HandlerFunc,它是一个接收*Context作为参数的函数
	//middleware是一种AOP的思想,主要用来解决所有业务都关心地通用逻辑
	//可以注册多个middleware,这些middleware会按照注册的顺序执行
	//注册middleware要在注册路由之前才会生效
	server.Use(func(ctx *gin.Context) {
		println("my first middleware")
	})
	server.Use(func(ctx *gin.Context) {
		println("my second middleware")
	})

	//注册路由
	server.GET("/ping", func(ctx *gin.Context) {
		type res struct {
			Code int `json:"code"`
			Data any `json:"data"`
		}
		r := &res{
			Code: 0,
			Data: "pong",
		}
		ctx.JSON(http.StatusOK, r)
	})

	//启动Web服务器
	server.Run(":8080")
}
